﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Oracle.DataAccess.Client;
using System.Configuration;
using Entidades.Consultas;
using System.Data;

namespace SICOIA.UserControls.Consultas
{
    public partial class ucConsultarListadoObrasPrioritariasPendientes : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Session["ObrasPendientes"] = null;
            CargarInformacion("PRIORITARIAS_PENDIENTES");
        }

        public void CargarInformacion(string param)
        {

            OracleCommand comando = null;
            OracleConnection conexion = new OracleConnection(ConfigurationManager.ConnectionStrings["conString"].ConnectionString);
            OracleDataReader lector = null;
            EntObraPendiente entidad = null;
            List<EntObraPendiente> lista = new List<EntObraPendiente>();
            try
            {
                comando = new OracleCommand("PKG_GRAFICAS.getListadoObrasPorEstatus", conexion);
                comando.CommandType = System.Data.CommandType.StoredProcedure;

                conexion.Open();

                OracleParameter cursor = new OracleParameter();
                cursor.OracleDbType = OracleDbType.RefCursor;
                cursor.Direction = ParameterDirection.Output;
                comando.Parameters.Add(cursor);

                OracleParameter param1 = new OracleParameter();
                param1.OracleDbType = OracleDbType.Varchar2;
                param1.Direction = ParameterDirection.Input;
                param1.Value = param;
                comando.Parameters.Add(param1);

                lector = comando.ExecuteReader(CommandBehavior.CloseConnection);

                while (lector.Read())
                {
                    entidad = new EntObraPendiente()
                    {
                        Obra = new Entidades.Solicitud.EntSolicitudTrabajosRealizar() { CveTrabajoRealizar = int.Parse(lector["CVE_TRABAJO_REALIZAR"].ToString()), DescripcionObra = lector["DESC_OBRA"].ToString() },
                        PermisosPendientes = int.Parse(lector["PP_PENDIENTES"].ToString())
                    };

                    lista.Add(entidad);
                }

                grdSoliciudes.DataSource = lista;
                grdSoliciudes.DataBind();

                Session["OBRAS_PRIORITARIAS_PENDIENTES"] = lista;
            }
            catch (OracleException exc)
            {
                ApplicationException excepcion = new ApplicationException("Se genero un error de ejecucion del procedimiento almacenado con el siguiente mensaje: \\n" + exc.Message);
                excepcion.Source = "getListadoObrasPorEstatus";
                throw excepcion;
            }
            catch (Exception exc)
            {
                ApplicationException excepcion = new ApplicationException("Se genero un error de ejecucion del procedimiento almacenado con el siguiente mensaje: \\n" + exc.Message);
                excepcion.Source = "getListadoObrasPorEstatus";
                throw excepcion;
            }
            finally
            {
                if (conexion.State == ConnectionState.Open)
                    conexion.Close();

                comando = null;

                if (lector != null)
                    lector.Close();
            }
        }

        protected void grdSoliciudes_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView gv = (GridView)sender;
            gv.PageIndex = e.NewPageIndex;

            grdSoliciudes.DataSource = Session["OBRAS_PRIORITARIAS_PENDIENTES"] as List<EntObraPendiente>;
            grdSoliciudes.DataBind();
        }
    }
}